﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BaHuan.Common;
using BaHuan.BusinessLayer;
using BaHuan.Entities;

// Developer : Do Van Xuyen  Date : 14/11/2012

namespace BaHuan
{
    public partial class FrmNganHang_DoiTac : Form
    {
        #region variable

        private NganHangDoiTacManagement nganhangdoitacMgt = new NganHangDoiTacManagement();
        private NganHangDoiTac nganhangdoitac = new NganHangDoiTac();
        private NhaCungCapManagement nhacungcapMgt = new NhaCungCapManagement();
        private NhaCungCap nhacungcap = new NhaCungCap();
        private KhachHangManagement khachhangMgt = new KhachHangManagement();
        private KhachHang khachhang = new KhachHang();

        private bool isEdited = false;
        #endregion

        #region Form Load and Init form value

        public FrmNganHang_DoiTac()
        {
            InitializeComponent();
        }

        private void FrmNganHang_DoiTac_Load(object sender, EventArgs e)
        {
            cbDoiTac.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            cbDoiTac.AutoCompleteSource = AutoCompleteSource.ListItems;

            groupNganHangTaiKhoan.Enabled = false;
            BindingToGrid();
            btnSua.Enabled = false;
            btnLuu.Enabled = false;
            btnXoa.Enabled = false;
        }

        public void BindingToGrid()
        {
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = null;
            ResultObj result = new ResultObj();
            result = nganhangdoitacMgt.GetAllNganHangDoiTac();
            List<NganHangDoiTac> listNganHangDoiTac = (List<NganHangDoiTac>)result.Result;
            dataGridView1.DataSource = listNganHangDoiTac;
        }

        public void ChangeStatusTextBox(bool IsReadOnly)
        {
            if (IsReadOnly)
            {
                txtMaNganHang.ReadOnly = true;
                txtTenNganHang.ReadOnly = true;
                txtDiaChi.ReadOnly = true;
      
            }
            else
            {
                txtMaNganHang.ReadOnly = false;
                txtTenNganHang.ReadOnly = false;
                txtDiaChi.ReadOnly = false;
            }
        }

        public void clearTextbox()
        {
            txtMaNganHang.Clear();
            txtTenNganHang.Clear();
            txtDiaChi.Clear();
        }

        #endregion

        #region Button Click

        private void btnThem_Click(object sender, EventArgs e)
        {
            btnSua.Enabled = false;
            btnLuu.Enabled = true;
            btnXoa.Enabled = false;
            lblId.Text = "";
            clearTextbox();
            groupNganHangTaiKhoan.Enabled = true;
            ChangeStatusTextBox(false);
            txtMaNganHang.Select();
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtMaNganHang.Text == "" || txtTenNganHang.Text == "" || txtDiaChi.Text == "")
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo");
                return;
            }

            ResultObj result = new ResultObj();
            string sMaNganHang = txtMaNganHang.Text;
            string sTenNganHang = txtTenNganHang.Text;
            string sDiaChi = txtDiaChi.Text;

            NganHangDoiTac nganhangdoitac = new NganHangDoiTac();
            nganhangdoitac.MaSo = sMaNganHang;
            nganhangdoitac.Ten = sTenNganHang;
            nganhangdoitac.DiaChi = sDiaChi;
            if(rbNCC.Checked == true)
            {
                nganhangdoitac.IdNCC = ((NhaCungCap)cbDoiTac.SelectedItem).Id;
            }
            else if (rbKhachHang.Checked == true)
            {
                nganhangdoitac.IdKhachHang = ((KhachHang)cbDoiTac.SelectedItem).Id;
            }
            else
            {
                MessageBox.Show("Vui lòng chọn Nhà cung cấp hoặc Khách hàng");
            }
            //

            if (lblId.Text == "")
            {
                result = nganhangdoitacMgt.SaveNewNganHangDoiTac(nganhangdoitac);
            }
            else
            {
                nganhangdoitac.Id = Convert.ToInt32(lblId.Text);
                result = nganhangdoitacMgt.UpdateNganHangDoiTac(nganhangdoitac);
                isEdited = true;
            }
            if (result.ReturnCode > 0)
            {
                MessageBox.Show("Lưu Thành Công", "Thông báo");
                btnSua.Enabled = true;
                btnXoa.Enabled = true;
                FrmNganHang_DoiTac_Load(null, null);
            }
            else if (result.ReturnCode == Definitions.DUPLICATED_VALUE)
            {
                MessageBox.Show("Dữ liệu bị trùng", "Thông báo");
                txtMaNganHang.Select();
            }
            else
            {
                MessageBox.Show("Thất bại");
                txtMaNganHang.Select();
            }

            BindingToGrid();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            btnLuu.Enabled = true;
            btnSua.Enabled = false;
            isEdited = true;
            groupNganHangTaiKhoan.Enabled = true;
            ChangeStatusTextBox(false);
            txtMaNganHang.Select();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            int Id = Convert.ToInt32(lblId.Text);
            DialogResult dialogResult = MessageBox.Show("Bạn chắc chắn muốn xóa?", "Thông báo!", MessageBoxButtons.YesNo);
            nganhangdoitac.Id = Id;
            if (dialogResult == DialogResult.Yes)
            {
                try
                {
                    nganhangdoitacMgt.DeleteNganHangDoiTac(nganhangdoitac);
                    BindingToGrid();
                    MessageBox.Show("Đã xóa", "Thông báo");
                }
                catch
                {
                    MessageBox.Show("Thao tác chưa được thực hiện","Thông báo");
                }
            }
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        #endregion

        #region Event

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                ChangeStatusTextBox(true);
                btnSua.Enabled = true;
                btnXoa.Enabled = true;
                btnLuu.Enabled = false;
                lblId.Enabled = false;
                lblId.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                txtMaNganHang.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
                txtTenNganHang.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
                txtDiaChi.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
                if (dataGridView1.Rows[e.RowIndex].Cells[4] != null && Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString())!=0)
                {
                    rbNCC.Checked = true;
                    cbDoiTac.SelectedValue = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString());
                }
                else if (dataGridView1.Rows[e.RowIndex].Cells[5] != null && Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString()) != 0)
                {
                    rbKhachHang.Checked = true;
                    cbDoiTac.SelectedValue = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString());
                }
            }
        }

        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
            this.Hide();
            nganhangdoitac = (NganHangDoiTac)dataGridView1.CurrentRow.DataBoundItem;
            FrmTaiKhoanDoiTac frm = new FrmTaiKhoanDoiTac();
            frm.NganHangDoiTac = nganhangdoitac;
            frm.ShowDialog();
            this.Show();
        }

        private void rbNCC_CheckedChanged(object sender, EventArgs e)
        {
            List<NhaCungCap> lstNCC = GetAllNCC();
            cbDoiTac.DataSource = lstNCC;
            cbDoiTac.DisplayMember = "TenNhaCungCap";
            cbDoiTac.ValueMember = "Id";
        }

        private void rbKhachHang_CheckedChanged(object sender, EventArgs e)
        {
            List<KhachHang> lstKH = GetAllKhachHang();
            cbDoiTac.DataSource = lstKH;
            cbDoiTac.DisplayMember = "Ten";
            cbDoiTac.ValueMember = "Id";
        }

        #endregion

        #region Database Query

        private List<NhaCungCap> GetAllNCC()
        {
            List<NhaCungCap> ncc = new List<NhaCungCap>();
            ResultObj result = nhacungcapMgt.GetAllNhaCungCap();
            ncc = (List<NhaCungCap>)result.Result;
            return ncc;
        }

        private List<KhachHang> GetAllKhachHang()
        {
            List<KhachHang> kh = new List<KhachHang>();
            ResultObj result = khachhangMgt.GetAllKhachHang();
            kh = (List<KhachHang>)result.Result;
            return kh;
        }

        #endregion
    }
}
